﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using BUS;
using DTO;

namespace QuanLyNhaHang
{
    public partial class QLLoaiNVL : Form
    {
        private string old_maloai = null;
        public QLLoaiNVL()
        {
            InitializeComponent();
        }

        private void buttonThoat_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        private void buttonSua_Click(object sender, EventArgs e)
        {
            var obj = new DTOLoaiNVL()
            {
                MaLoai = textBoxMaLoai.Text.Trim(),
                TenLoai = textBoxTenLoai.Text.Trim(),                
            };
            if (check(obj))
            {                          
                if (BUSLoaiNVL.edit(obj,old_maloai) > 0)
                {
                    MessageBox.Show("Sửa dữ liệu thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    reloadDatagrid();
                }
                else
                {
                    MessageBox.Show("Sửa dữ liệu thất bại", "Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            buttonSua.Enabled = false;
        }

        private void buttonXoa_Click(object sender, EventArgs e)
        {
            if (dataGridViewLoaiNVL.SelectedRows.Count > 0)
            {
                BUSLoaiNVL.del(new DTOLoaiNVL()
                {
                    MaLoai = (string)dataGridViewLoaiNVL.CurrentRow.Cells[0].Value
                });
                reloadDatagrid();
            }
        }

        private void buttonThem_Click(object sender, EventArgs e)
        {
            add();
        }

        private void reloadDatagrid()
        {
            dataGridViewLoaiNVL.DataSource = BUSLoaiNVL.getAll();
        }

        private void add()
        {
            var obj = new DTOLoaiNVL()
            {
                MaLoai = textBoxMaLoai.Text.Trim(),
                TenLoai = textBoxTenLoai.Text.Trim(),                
            };
            old_maloai = null;
            if (check(obj))
            {                                
                if (BUSLoaiNVL.add(obj) > 0)
                {
                    MessageBox.Show("Thêm mới thành công", "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    reloadDatagrid();
                }
                else
                {
                    MessageBox.Show("Thêm mới thất bại", "Thông báo lỗi", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }

        private bool check(DTOLoaiNVL obj)
        {
            StringBuilder str = new StringBuilder();

            if (string.IsNullOrEmpty(obj.MaLoai))
            {
                str.AppendLine("Mã loại không được bỏ trống.");
            }

            if (string.IsNullOrEmpty(obj.TenLoai))
            {
                str.AppendLine("Tên loại không được bỏ trống.");
            }

            if (BUSLoaiNVL.checkDuplicate(obj,old_maloai))
            {
                str.AppendLine("Mã loại không được trùng với mã đã có trong danh sách.");
            }
            
            if (str.Length > 0)
            {
                MessageBox.Show(str.ToString(), "Thông báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
            resetText();
            return true;
        }

        private void QLLoaiNVL_Load(object sender, EventArgs e)
        {
            dataGridViewLoaiNVL.DataSource = BUSLoaiNVL.getAll();            
        }

        private void dataGridViewLoaiNVL_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            textBoxMaLoai.Text = old_maloai = (string)dataGridViewLoaiNVL.CurrentRow.Cells[0].Value;
            textBoxTenLoai.Text = (string)dataGridViewLoaiNVL.CurrentRow.Cells[1].Value;
            buttonSua.Enabled = true;
        }

        private void buttonReset_Click(object sender, EventArgs e)
        {
            resetText();
        }

        private void resetText()
        {
            textBoxMaLoai.ResetText();
            textBoxTenLoai.ResetText();
        }

        private void textBoxMaLoai_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                add();
            }
        }

        private void textBoxTenLoai_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                add();
            }
        }
    }
}
